Rhea の使用
JavaScript を使用した AMQ メッセージングクライアントの開発
概要
多様性を受け入れるオープンソースの強化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
第1章 概要 リンクのコピーリンクがクリップボードにコピーされました!
Rhea は、メッセージングアプリケーションを開発するためのライブラリーです。また、AMQP メッセージを送受信する JavaScript アプリケーションを作成できます。
Red Hat build of Rhea は、複数の言語やプラットフォームをサポートするメッセージングライブラリースイートである AMQ Clients の一部です。利用可能なクライアントの詳細は、AMQ クライアント を参照してください。
Red Hat build of Rhea は、Rhea メッセージングライブラリーに基づいています。詳細な API ドキュメントは、Rhea API リファレンス を参照してください。
1.1. 主な特長 リンクのコピーリンクがクリップボードにコピーされました!
- 既存のアプリケーションとの統合を簡素化するイベント駆動型の API
- セキュアな通信用の SSL/TLS
- 柔軟な SASL 認証
- 自動再接続およびフェイルオーバー
- AMQP と言語ネイティブのデータ型間のシームレスな変換
- AMQP 1.0 の全機能へのアクセス
1.2. サポートされる標準およびプロトコル リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Rhea は、以下の業界標準およびネットワークプロトコルをサポートします。
- Advanced Message Queueing Protocol (AMQP) のバージョン 1.0
- SSL の後継である TLS (Transport Layer Security) プロトコルのバージョン 1.0、1.1、1.2、および 1.3
- Simple Authentication and Security Layer (SASL) メカニズム ANONYMOUS、PLAIN、EXTERNAL
- IPv6 での最新の TCP
1.3. サポートされる構成 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Rhea でサポートされている設定に関する最新情報は、Red Hat Customer Portal で Red Hat AMQ でサポートされる設定 を参照してください。
1.4. 用語および概念 リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、コア API エンティティーを紹介し、コア API が連携する方法を説明します。
| エンティティー | 説明 |
|---|---|
| Container | 接続の最上位のコンテナー。 |
| Connection | ネットワーク上の 2 つのピア間の通信チャネル。これにはセッションが含まれます。 |
| Session | メッセージの送受信を行うためのコンテキスト。送信者および受信者が含まれます。 |
| Sender | メッセージをターゲットに送信するためのチャネル。これにはターゲットがあります。 |
| Receiver | ソースからメッセージを受信するためのチャネル。これにはソースがあります。 |
| Source | メッセージの名前付きの発信元。 |
| Target | メッセージの名前付き受信先。 |
| Message | 情報のアプリケーション固有の部分。 |
| Delivery | メッセージの転送。 |
Red Hat build of Rhea は メッセージ を送受信します。メッセージは、sender と receiver を介して、接続されたピアの間で転送されます。送信側および受信側は セッション 上で確立されます。セッションは 接続 上で確立されます。接続は、一意に識別された 2 つの コンテナー 間で確立されます。コネクションには複数のセッションを含めることができますが、多くの場合は必要ありません。API を使用すると、セッションが必要でない限り、セッションを無視できます。
送信ピアは、メッセージ送信用の送信者を作成します。送信側には、リモートピアでキューまたはトピックを識別する ターゲット があります。受信ピアは、メッセージ受信用の受信者を作成します。受信側には、リモートピアでキューまたはトピックを識別する ソース があります。
メッセージの送信は 配信 と呼ばれます。メッセージとは、送信される内容のことで、ヘッダーやアノテーションなどのすべてのメタデータが含まれます。配信は、そのコンテンツの移動に関連するプロトコルエクスチェンジです。
配信が完了したことを示すには、送信側または受信側セットのいずれかが解決します。送信側または受信側が解決されたことを知らせると、その配信の通信ができなくなります。受信側は、メッセージを受諾するか、拒否するかどうかを指定することもできます。
1.5. このドキュメントの表記慣例 リンクのコピーリンクがクリップボードにコピーされました!
sudo コマンド
このドキュメントでは、root 権限を必要とするすべてのコマンドに対して sudo が使用されています。すべての変更がシステム全体に影響する可能性があるため、sudo を使用する場合は注意が必要です。sudo の詳細は、sudo コマンドの使用 を参照してください。
ファイルパス
このドキュメントでは、すべてのファイルパスが Linux、UNIX、および同様のオペレーティングシステムで有効です (例: /home/andrea)。Microsoft Windows では、同等の Windows パスを使用する必要があります (例: C:\Users\andrea)。
変数テキスト
このドキュメントでは、変数を含むコードブロックが紹介されていますが、これは、お客様の環境に固有の値に置き換える必要があります。可変テキストは矢印の中括弧で囲まれ、斜体の等幅フォントとしてスタイル設定されます。たとえば、以下のコマンドでは <project-dir> は実際の環境の値に置き換えます。
cd <project-dir>
$ cd <project-dir>
第2章 インストール リンクのコピーリンクがクリップボードにコピーされました!
この章では、環境に Red Hat build of Rhea をインストールする手順を説明します。
2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- AMQ リリースファイルおよびリポジトリーにアクセスするには、サブスクリプション が必要です。
-
環境に
npmコマンドラインツールをインストールする必要があります。詳細は、npm の Web サイトを参照してください。 - Red Hat build of Rhea を使用するには、Node.js を環境にインストールする必要があります。詳細は、Node.js の Web サイトを参照してください。
-
Red Hat build of Rhea は、Node.js
debugモジュールに依存します。インストール手順は、デバッグ npm ページ を参照してください。
2.2. Red Hat NPM レジストリーの使用 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat NPM レジストリーからクライアントライブラリーをダウンロードするように NPM 環境を設定します。
手順
npm config setコマンドを使用して、Red Hat NPM レジストリーを環境に追加します。sudo npm config set @redhat:registry https://npm.registry.redhat.com
$ sudo npm config set @redhat:registry https://npm.registry.redhat.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow npm installコマンドを使用して、クライアントをインストールします。sudo npm install -g @redhat/rhea@3.0.2-redhat-00001
$ sudo npm install -g @redhat/rhea@3.0.2-redhat-00001Copy to Clipboard Copied! Toggle word wrap Toggle overflow
上記の手順は、システム全体のインストール用です。sudo や -g オプションを指定せずにコマンドを実行して、ローカルインストールを実行できます。
インストールされたライブラリーを使用するように環境を設定するには、node_modules/@redhat ディレクトリーを NODE_PATH 環境変数に追加します。
Red Hat Enterprise Linux
export NODE_PATH=/usr/local/lib/node_modules/@redhat:$NODE_PATH
$ export NODE_PATH=/usr/local/lib/node_modules/@redhat:$NODE_PATH
Windows
set NODE_PATH=%AppData%\Roaming\npm\node_modules\@redhat;%NODE_PATH%
$ set NODE_PATH=%AppData%\Roaming\npm\node_modules\@redhat;%NODE_PATH%
インストールをテストするには、次のコマンドを使用します。インストールされたライブラリーを正常にインポートすると、コンソールに OK と出力されます。
node -e 'require("rhea")' && echo OK
OK
$ node -e 'require("rhea")' && echo OK
OK
2.3. ブラウザーへのクライアントのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Rhea は、Web ブラウザー内で実行できます。NPM パッケージには、次の場所にある rhea.js という名前のファイルが含まれており、ブラウザーベースのアプリケーションで使用できます。
/usr/local/lib/node_modules/@redhat/rhea/dist/rhea.js
/usr/local/lib/node_modules/@redhat/rhea/dist/rhea.js
次の例のように、rhea.js ファイルを Web サーバーによって公開されている場所にコピーし、HTML <script> 要素を使用して参照します。
例: ブラウザーでのクライアントの実行
2.4. サンプルのインストール リンクのコピーリンクがクリップボードにコピーされました!
-
git cloneコマンドを使用して、ソースリポジトリーをrheaという名前のローカルディレクトリーにクローンします。
git clone https://github.com/amqp/rhea.git
$ git clone https://github.com/amqp/rhea.git
rhea ディレクトリーに移動し、git checkout コマンドを使用して、このリリースに関連付けられたコミットをチェックアウトします。
cd rhea git checkout 3.0.2
$ cd rhea
$ git checkout 3.0.2
このガイドでは、結果のローカルディレクトリーを <source-dir> と呼びます。
第3章 スタートガイド リンクのコピーリンクがクリップボードにコピーされました!
この章では、環境を設定して簡単なメッセージングプログラムを実行する手順を説明します。
3.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
3.2. Red Hat Enterprise Linux での Hello World の実行 リンクのコピーリンクがクリップボードにコピーされました!
Hello World の例では、ブローカーへの接続を作成し、グリーティングを含むメッセージを examples キューに送信して、受信しなおします。成功すると、受信したメッセージをコンソールに出力します。
examples ディレクトリーに移動し、helloworld.js の例を実行します。
cd <source-dir>/examples node helloworld.js Hello World!
$ cd <source-dir>/examples
$ node helloworld.js
Hello World!
3.3. Microsoft Windows での Hello World の実行 リンクのコピーリンクがクリップボードにコピーされました!
Hello World の例では、ブローカーへの接続を作成し、グリーティングを含むメッセージを examples キューに送信して、受信しなおします。成功すると、受信したメッセージをコンソールに出力します。
examples ディレクトリーに移動し、helloworld.js の例を実行します。
> cd <source-dir>/examples > node helloworld.js Hello World!
> cd <source-dir>/examples
> node helloworld.js
Hello World!
第4章 例 リンクのコピーリンクがクリップボードにコピーされました!
この章では、サンプルプログラムで Red Hat build of Rhea を使用する方法を説明します。
その他の例は、Rhea サンプルスイート および Rhea サンプル を参照してください。
4.1. メッセージの送信 リンクのコピーリンクがクリップボードにコピーされました!
このクライアントプログラムは <connection-url> を使用してサーバーに接続し、ターゲット <address> の送信者を作成し、<message-body> を含むメッセージを送信し、接続を切断して終了します。
例: メッセージの送信
サンプルの実行
サンプルプログラムを実行するには、サンプルプログラムをローカルファイルにコピーし、node コマンドを使用して呼び出します。詳細は、3章スタートガイド を参照してください。
node send.js amqp://localhost queue1 hello
$ node send.js amqp://localhost queue1 hello
4.2. メッセージの受信 リンクのコピーリンクがクリップボードにコピーされました!
このクライアントプログラムは <connection-url> を使用してサーバーに接続し、ソース <address> の受信側を作成し、終了するか、<count> メッセージに到達するまでメッセージを受信します。
例: メッセージの受信
サンプルの実行
サンプルプログラムを実行するには、サンプルプログラムをローカルファイルにコピーし、python コマンドを使用して呼び出します。詳細は、3章スタートガイド を参照してください。
node receive.js amqp://localhost queue1
$ node receive.js amqp://localhost queue1
第5章 API の使用 リンクのコピーリンクがクリップボードにコピーされました!
詳細は、Rhea API リファレンス、Rhea サンプルスイート、および Rhea サンプル を参照してください。
5.1. メッセージングイベントの処理 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Rhea は、非同期イベント駆動型 API です。アプリケーションがイベントを処理する方法を定義するには、ユーザーはイベント処理関数を container オブジェクトに登録します。これらの関数は、ネットワークアクティビティーとして呼び出され、タイマーが新規イベントをトリガーします。
例: メッセージングイベントの処理
これらはごく一部の一般的なケースイベントのみです。完全なセットは、Rhea API リファレンス に文書化されています。
5.3. コンテナーの作成 リンクのコピーリンクがクリップボードにコピーされました!
コンテナーは最上位の API オブジェクトです。これは、接続を作成するエントリーポイントであり、メインのイベントループを実行します。多くの場合、これはグローバルイベントハンドラーで構築されます。
例: コンテナーの作成
var rhea = require("rhea");
var container = rhea.create_container();
var rhea = require("rhea");
var container = rhea.create_container();
5.4. コンテナーアイデンティティーの設定 リンクのコピーリンクがクリップボードにコピーされました!
各コンテナーインスタンスには、コンテナー ID と呼ばれる一意のアイデンティティーがあります。Red Hat build of Rhea がネットワーク接続を作成すると、コンテナー ID がリモートピアに送信されます。コンテナー ID を設定するには、id オプションを create_container メソッドに渡します。
例: コンテナーアイデンティティーの設定
var container = rhea.create_container({id: "job-processor-3"});
var container = rhea.create_container({id: "job-processor-3"});
ユーザーが ID を設定しないと、コンテナーの構築時にライブラリーが UUID を生成します。
第6章 ネットワーク接続 リンクのコピーリンクがクリップボードにコピーされました!
6.1. 外向き接続の作成 リンクのコピーリンクがクリップボードにコピーされました!
リモートサーバーに接続するには、ホストとポートを含む接続オプションを container.connect() メソッドに渡します。
例: 外向き接続の作成
デフォルトのホストは localhost です。デフォルトのポートは 5672 です。
セキュアな接続の作成に関する詳細は、7章セキュリティー を参照してください。
6.2. 再接続の設定 リンクのコピーリンクがクリップボードにコピーされました!
再接続することで、クライアントは失われた接続から復旧できます。これは、一時的なネットワークまたはコンポーネントの障害後に、分散システムのコンポーネントが再確立されるように使用されます。
Red Hat build of Rhea は、デフォルトで再接続を有効にします。接続試行に失敗すると、クライアントは少しの遅延の後に再度試行します。遅延は、デフォルトの最大値 60 秒まで、新しい試行ごとに指数関数的に増加します。
再接続を無効にするには、reconnect 接続オプションを false に設定します。
例: 再接続の無効化
次の接続試行までの間の遅延を制御するには、接続オプション initial_reconnect_delay および max_reconnect_delay を設定します。遅延オプションはミリ秒単位で指定します。
再接続試行回数を制限するには、reconnect_limit オプションを設定します。
例: 再接続の設定例
6.3. フェイルオーバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Rhea を使用すると、代わりの接続エンドポイントをプログラムで設定できます。
複数の接続エンドポイントを指定するには、新しい接続オプションを返す関数を定義し、connection_details オプションで関数を渡します。この関数は、接続試行ごとに 1 回呼び出されます。
例: フェイルオーバーの設定
この例では、ホストのリストに対してラウンドロビンフェイルオーバーを繰り返すように実装します。このインターフェイスを使用して、独自のフェイルオーバー動作を実装できます。
6.4. 内向き接続の許可 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Rhea はインバウンドネットワーク接続を受け入れ、カスタムメッセージングサーバーを構築できます。
接続のリッスンを開始するには、container.listen() メソッドを使用して、ローカルホストアドレスとリッスンするポートが含まれるオプションを指定します。
例: 内向き接続の許可
特別な IP アドレス 0.0.0.0 は、利用可能なすべての IPv4 インターフェイスでリッスンします。すべての IPv6 インターフェイスをリッスンするには [::0] を使用します。
詳細は、サーバー receive.js の例 を参照してください。
第7章 セキュリティー リンクのコピーリンクがクリップボードにコピーされました!
7.1. SSL/TLS を使用した接続のセキュリティー保護 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Rhea は SSL/TLS を使用して、クライアントとサーバー間の通信を暗号化します。
SSL/TLS を使用してリモートサーバーに接続するには、transport 接続オプションを tls に設定します。
例: SSL/TLS の有効化
デフォルトでは、クライアントは信頼できない証明書が割り当てられたサーバーへの接続を拒否します。これは、テスト環境などが該当します。証明書の認証を省略するには、rejectUnauthorized 接続オプションを false に設定します。これにより、接続のセキュリティーが危険にさらされることに注意してください。
7.2. ユーザーとパスワードを使用した接続 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Rhea は、ユーザーとパスワードによる接続を認証できます。
認証に使用する認証情報を指定するには、接続オプション username と password を設定します。
例: ユーザーとパスワードを使用した接続
7.3. SASL 認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Rhea は SASL プロトコルを使用して認証を実行します。SASL はさまざまな認証 メカニズム を使用できます。ネットワークピアが 2 つ接続すると、許可されたメカニズムが交換され、両方で許可されている最も強力なメカニズムが選択されます。
Red Hat build of Rhea は、ユーザーとパスワード情報があるかどうかによって SASL メカニズムを有効にします。ユーザーとパスワードの両方が指定されている場合は、PLAIN が使用されます。ユーザーのみを指定すると、ANONYMOUS が使用されます。いずれも指定されていない場合、SASL は無効になります。
第8章 送信者と受信者 リンクのコピーリンクがクリップボードにコピーされました!
クライアントは、送信者と受信者のリンクを使用して、メッセージ配信のチャネルを表現します。送信者と受信者は一方向であり、送信元はメッセージの発信元に、ターゲットはメッセージの宛先になります。
ソースとターゲットは、多くの場合、メッセージブローカーのキューまたはトピックを参照します。ソースは、サブスクリプションを表すためにも使用されます。
8.1. オンデマンドでのキューとトピックの作成 リンクのコピーリンクがクリップボードにコピーされました!
メッセージサーバーによっては、キューとトピックのオンデマンド作成をサポートします。送信側または受信側が割り当てられている場合、サーバーは送信側ターゲットアドレスまたは受信側ソースアドレスを使用して、アドレスに一致する名前でキューまたはトピックを作成します。
メッセージサーバーは通常、キュー (1 対 1 のメッセージ配信用) またはトピック (1 対多のメッセージ配信用) を作成します。クライアントは、ソースまたはターゲットに queue または topic 機能を設定してどちらを優先するかを示すことができます。
キューまたはトピックセマンティクスを選択するには、以下の手順に従います。
- キューとトピックを自動的に作成するようにメッセージサーバーを設定します。多くの場合は、これがデフォルト設定になります。
-
以下の例のように、送信者ターゲットまたは受信者ソースに
queueまたはtopic機能を設定します。
例: オンデマンドで作成されたキューへの送信
例: オンデマンドで作成されたトピックからの受信
詳細は、以下の例を参照してください。
8.2. 永続サブスクリプションの作成 リンクのコピーリンクがクリップボードにコピーされました!
永続サブスクリプションは、メッセージの受信側を表すリモートサーバーの状態です。通常、メッセージ受信者は、クライアントが終了すると、破棄されます。ただし、永続サブスクリプションは永続的であるため、クライアントはそれらのサブスクリプションの割り当てを解除してから、後で再度アタッチできます。デタッチ時に受信したすべてのメッセージは、クライアントの再割り当て時に利用できます。
永続サブスクリプションは、クライアントコンテナー ID とレシーバー名を組み合わせてサブスクリプション ID を形成することで一意に識別されます。これらには、サブスクリプションを回復できるように、安定した値が必要です。
接続コンテナー ID を
client-1などの安定した値に設定します。var container = rhea.create_container({id: "client-1"});var container = rhea.create_container({id: "client-1"});Copy to Clipboard Copied! Toggle word wrap Toggle overflow sub-1などの安定した名前で受信側を作成し、durableおよびexpiry_policyプロパティーを指定して、受信者のソースが永続化されるように設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
サブスクリプションからデタッチするには、receiver.detach() メソッドを使用します。サブスクリプションを終了するには、receiver.close() メソッドを使用します。
詳細は、durable-subscribe.js の例 を参照してください。
第9章 エラー処理 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Rhea のエラーは、AMQP プロトコルまたは接続エラーに対応する名前付きイベントをインターセプトすることで処理できます。
9.1. 接続およびプロトコルエラーの処理 リンクのコピーリンクがクリップボードにコピーされました!
以下のイベントをインターセプトして、プロトコルレベルのエラーを処理できます。
-
connection_error -
session_error -
sender_error -
receiver_error -
protocol_error -
error
これらのイベントは、イベントにある特定のオブジェクトにエラー状態が生じるたびに実行されます。エラーハンドラーを呼び出すと、対応する <object>_close ハンドラーも呼び出されます。
event 引数には、エラーオブジェクトにアクセスするための error 属性があります。
例: エラーの処理
container.on("error", function (event) {
console.log("An error!", event.error);
});
container.on("error", function (event) {
console.log("An error!", event.error);
});
クローズハンドラーはエラー発生時に呼び出されるため、エラーハンドラー内でのみ処理する必要があります。リソースのクリーンアップは、近辺にあるハンドラーで管理できます。特定のオブジェクトに固有のエラー処理がない場合は、一般的な error イベントを処理してより具体的なハンドラーを持たないのが一般的です。
再接続が有効になっており、リモートサーバーが amqp:connection:forced の条件で接続が切断されると、クライアントはこれをエラーとして処理しないため、connection_error イベントは実行されません。代わりに、クライアントが再接続プロセスを開始します。
第10章 ロギング リンクのコピーリンクがクリップボードにコピーされました!
10.1. ロギングの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Rhea は JavaScript デバッグモジュール を使用してロギングを実装します。
たとえば、詳細なクライアントロギングを有効にするには、DEBUG 環境変数を rhea* に設定します。
例: 詳細ログの有効化
export DEBUG=rhea* <your-client-program>
$ export DEBUG=rhea*
$ <your-client-program>
10.2. プロトコルロギングの有効化 リンクのコピーリンクがクリップボードにコピーされました!
クライアントは AMQP プロトコルフレームをコンソールに記録できます。多くの場合、このデータは問題の診断時に重要になります。
プロトコルロギングを有効にするには、DEBUG 環境変数を rhea:frames に設定します。
例: プロトコルロギングの有効化
export DEBUG=rhea:frames <your-client-program>
$ export DEBUG=rhea:frames
$ <your-client-program>
第11章 ファイルベースの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Rhea は、connect.json という名前のローカルファイルからの接続確立に使用される設定オプションを読み取ることができます。これにより、デプロイメント時にアプリケーションで接続を設定できます。
ライブラリーは、接続オプションを指定せずにアプリケーションがコンテナーの connect メソッドを呼び出すと、ファイルの読み取りを試みます。
11.1. ファイルの場所 リンクのコピーリンクがクリップボードにコピーされました!
設定されていると、Red Hat build of Rhea は MESSAGING_CONNECT_FILE 環境変数の値を使用して設定ファイルを検索します。
MESSAGING_CONNECT_FILE が設定されていないと、Red Hat build of Rhea は以下の場所で connect.json という名前のファイルを検索します。最初の一致で停止します。
Linux の場合:
-
$PWD/connect.json:$PWDは、クライアントプロセスの現在の作業ディレクトリーです。 -
$HOME/.config/messaging/connect.json:$HOMEは、現在のユーザーのホームディレクトリーに置き換えます。 -
/etc/messaging/connect.json
Windows の場合:
-
%cd%/connect.json:%cd%は、クライアントプロセスの現在の作業ディレクトリーです。
connect.json ファイルが見つからない場合、ライブラリーはすべてのオプションにデフォルト値を使用します。
11.2. ファイル形式 リンクのコピーリンクがクリップボードにコピーされました!
connect.json ファイルには JSON データが含まれており、JavaScript コメントもサポートされています。
設定属性はすべてオプションであるか、デフォルト値が設定されているため、簡単な例では詳細をいくつか指定するだけで済みます。
例: 簡単な connect.json ファイル
{
"host": "example.com",
"user": "alice",
"password": "secret"
}
{
"host": "example.com",
"user": "alice",
"password": "secret"
}
SASL および SSL/TLS オプションは、"sasl" および "tls" namespace で入れ子になっています。
例: SASL および SSL/TLS オプションを含む connect.json ファイル
11.3. 設定オプション リンクのコピーリンクがクリップボードにコピーされました!
ドット (.) を含むオプションキーは、namespace にネストされた属性を表します。
| キー | 値の型 | デフォルト値 | 説明 |
|---|---|---|---|
|
| string |
|
SSL/TLS のクリアテキストまたは |
|
| string |
| リモートホストのホスト名または IP アドレス |
|
| string または number |
| ポート番号またはポートリテラル |
|
| string | なし | 認証のユーザー名 |
|
| string | なし | 認証のパスワード |
|
| list または string | なし (システムのデフォルト) | 有効な SASL メカニズムの JSON リスト。ベア文字列は 1 つのメカニズムを表します。指定がない場合、クライアントはシステムによって提供されるデフォルトのメカニズムを使用します。 |
|
| boolean |
| クリアテキストパスワードを送信するメカニズムの有効化 |
|
| string | なし | クライアント証明書のファイル名またはデータベース ID |
|
| string | なし | クライアント証明書の秘密鍵のファイル名またはデータベース ID |
|
| string | なし | CA 証明書のファイル名、ディレクトリー、またはデータベース ID |
|
| boolean |
| ホスト名が一致する、有効なサーバー証明書が必要 |
第12章 相互運用性 リンクのコピーリンクがクリップボードにコピーされました!
この章では、Red Hat build of Rhea を他の AMQ コンポーネントと組み合わせて使用する方法を説明します。AMQ コンポーネントの互換性の概要は、製品の概要 を参照してください。
12.1. 他の AMQP クライアントとの相互運用 リンクのコピーリンクがクリップボードにコピーされました!
AMQP メッセージは AMQP 型のシステム を使用して構成されます。このような一般的な形式は、異なる言語の AMQP クライアントが相互に対話できる理由の 1 つです。
メッセージを送信する場合、Red Hat build of Rhea は自動的に言語ネイティブの型を AMQP でエンコードされたデータに変換します。メッセージの受信時に、リバース変換が行われます。
AMQP の型の詳細は、Apache Qpid プロジェクトによって維持される インタラクティブ型リファレンス を参照してください。
| AMQP 型 | 説明 |
|---|---|
| 空の値 | |
| true または false の値 | |
| 単一の Unicode 文字 | |
| Unicode 文字のシーケンス | |
| バイトのシーケンス | |
| 署名済み 8 ビット整数 | |
| 署名済み 16 ビット整数 | |
| 署名済み 32 ビット整数 | |
| 署名済み 64 ビット整数 | |
| 署名なしの 8 ビット整数 | |
| 署名なしの 16 ビット整数 | |
| 署名なしの 32 ビット整数 | |
| 署名なしの 64 ビット整数 | |
| 32 ビット浮動小数点数 | |
| 64 ビット浮動小数点数 | |
| 単一型の値シーケンス | |
| 変数型の値シーケンス | |
| 異なるキーから値へのマッピング | |
| ユニバーサル一意識別子 | |
| 制限されたドメインからの 7 ビットの ASCII 文字列 | |
| 絶対的な時間 |
JavaScript にあるネイティブ型は、AMQP がエンコードできる数よりも少なくなっています。特定の AMQP 型を含むメッセージを送信するには、rhea/types.js モジュールの wrap_ 関数を使用します。
| AMQP 型 | エンコード前の Rhea の型 | デコード後の Rhea の型 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| エンコード前の Rhea の型 | AMQ C++ 型 | Red Hat build of Apache Qpid Proton DotNet 型 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| - | - |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| エンコード前の Rhea の型 | Red Hat build of Apache Qpid Proton Python の型 | |
|---|---|---|
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
| - | |
|
|
| |
|
|
|
12.2. Red Hat build of Apache Qpid JMS との相互運用 リンクのコピーリンクがクリップボードにコピーされました!
AMQP は JMS メッセージングモデルへの標準マッピングを定義します。このセクションでは、そのマッピングのさまざまな側面を説明します。詳細は、Red Hat build of Apache Qpid JMS 相互運用性 の章を参照してください。
JMS メッセージ型
Red Hat build of Rhea は、本文の型が異なる、単一のメッセージを提供します。一方、JMS API は異なるメッセージの型を使用してさまざまな種類のデータを表します。次の表は、特定の body の型が JMS メッセージの型にどのようにマップされるかを示しています。
作成される JMS メッセージの型をさらに明示的に制御するには、x-opt-jms-msg-type メッセージアノテーションを設定できます。詳細は、Red Hat build of Apache Qpid JMS 相互運用性 の章を参照してください。
| Rhea ボディーの型 | JMS メッセージの型 |
|---|---|
|
| |
|
| |
|
| |
| それ以外の型 |
12.3. AMQ Broker への接続 リンクのコピーリンクがクリップボードにコピーされました!
AMQ Broker は AMQP 1.0 クライアントと相互運用するために設計されています。以下を確認して、ブローカーが AMQP メッセージング用に設定されていることを確認します。
- ネットワークファイアウォールのポート 5672 が開いている。
- AMQ Broker AMQP アクセプターが有効になっている。デフォルトのアクセプター設定 を参照してください。
- 必要なアドレスがブローカーに設定されている。アドレス、キュー、およびトピック を参照してください。
- ブローカーはクライアントからのアクセスを許可するように設定され、クライアントは必要な認証情報を送信するように設定されている。Broker Security を参照してください。
付録A サブスクリプションの使用 リンクのコピーリンクがクリップボードにコピーされました!
AMQ は、ソフトウェアサブスクリプションから提供されます。サブスクリプションを管理するには、Red Hat カスタマーポータルでアカウントにアクセスします。
A.1. アカウントへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
手順
- access.redhat.com に移動します。
- アカウントがない場合は作成します。
- アカウントにログインします。
A.2. サブスクリプションのアクティベート リンクのコピーリンクがクリップボードにコピーされました!
手順
- access.redhat.com に移動します。
- My Subscriptions に移動します。
- Activate a subscription に移動し、16 桁のアクティベーション番号を入力します。
A.3. リリースファイルのダウンロード リンクのコピーリンクがクリップボードにコピーされました!
.zip、.tar.gz、およびその他のリリースファイルにアクセスするには、カスタマーポータルを使用してダウンロードする関連ファイルを検索します。RPM パッケージまたは Red Hat Maven リポジトリーを使用している場合、この手順は必要ありません。
手順
- ブラウザーを開き、access.redhat.com/downloads で Red Hat カスタマーポータルの Product Downloads ページにログインします。
- INTEGRATION AND AUTOMATION カテゴリーの Red Hat AMQ エントリーを見つけます。
- 必要な AMQ 製品を選択します。Software Downloads ページが開きます。
- コンポーネントの Download リンクをクリックします。
A.4. パッケージ用システムの登録 リンクのコピーリンクがクリップボードにコピーされました!
この製品の RPM パッケージを Red Hat Enterprise Linux にインストールするには、システムが登録されている必要があります。ダウンロードしたリリースファイルを使用している場合、この手順は必要ありません。
手順
- access.redhat.com に移動します。
- Registration Assistant に移動します。
- ご使用の OS バージョンを選択し、次のページに進みます。
- システムの端末にリスト表示されたコマンドを使用して、登録を完了します。
システムを登録する方法は、以下のリソースを参照してください。
付録B 例で AMQ ブローカーの使用 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Rhea の例では、名前が examples というキューが含まれる実行中のメッセージブローカーが必要です。以下の手順に従って、ブローカーをインストールして起動し、キューを定義します。
B.1. ブローカーのインストール リンクのコピーリンクがクリップボードにコピーされました!
Getting Started with AMQ Broker の手順に従って、ブローカーをインストール して、ブローカーインスタンスを作成 します。匿名アクセスを有効にします。
以下の手順では、ブローカーインスタンスの場所を <broker-instance-dir> と呼びます。
B.2. ブローカーの起動 リンクのコピーリンクがクリップボードにコピーされました!
手順
artemis runコマンドを使用してブローカーを起動します。<broker-instance-dir>/bin/artemis run
$ <broker-instance-dir>/bin/artemis runCopy to Clipboard Copied! Toggle word wrap Toggle overflow 起動時にログに記録された重大なエラーがないか、コンソールの出力を確認してください。ブローカーでは、準備が整うと
Server is now liveとログに記録されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
B.3. キューの作成 リンクのコピーリンクがクリップボードにコピーされました!
新しいターミナルで、artemis queue コマンドを使用して examples という名前のキューを作成します。
<broker-instance-dir>/bin/artemis queue create --name examples --address examples --auto-create-address --anycast
$ <broker-instance-dir>/bin/artemis queue create --name examples --address examples --auto-create-address --anycast
プロンプトで質問に Yes または No で回答するように求められます。すべての質問に N (いいえ) と回答します。
キューが作成されると、ブローカーはサンプルプログラムで使用できるようになります。
B.4. ブローカーの停止 リンクのコピーリンクがクリップボードにコピーされました!
サンプルの実行が終了したら、artemis stop コマンドを使用してブローカーを停止します。
<broker-instance-dir>/bin/artemis stop
$ <broker-instance-dir>/bin/artemis stop
改訂日時: 2024-02-10